package com.mdd.admin.service;

import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.CustomerProjectCreateValidate;
import com.mdd.admin.validate.CustomerProjectUpdateValidate;
import com.mdd.admin.validate.CustomerProjectSearchValidate;
import com.mdd.admin.vo.CustomerProjectListedVo;
import com.mdd.admin.vo.CustomerProjectDetailVo;
import com.mdd.common.core.PageResult;

import java.util.List;

/**
 * 客户与项目匹配服务接口类
 * @author LikeAdmin
 */
public interface ICustomerProjectService {

    /**
     * 客户与项目匹配列表
     *
     * @author LikeAdmin
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<CustomerProjectListedVo>
     */
    PageResult<CustomerProjectListedVo> list(PageValidate pageValidate, CustomerProjectSearchValidate searchValidate);

    /**
     * 客户与项目匹配详情
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return CustomerProjectDetailVo
     */
    CustomerProjectDetailVo detail(Integer id);

    /**
     * 客户与项目匹配新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(CustomerProjectCreateValidate createValidate);

    /**
     * 客户与项目匹配新增
     * @param customerId  客户id
     * @param projectIds  匹配的项目的id列表
     * @author LikeAdmin
     */
    void add(Integer customerId, List<Integer> projectIds);




    /**
     * 客户与项目匹配编辑
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(CustomerProjectUpdateValidate updateValidate);

    /**
     * 客户与项目匹配删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Integer id);

}
